package com.atguigu.gulimall.gateway.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;

@Configuration
public class GulimallCorsConfiguration {
    /**
     *这个filter本身就是跨域的过滤器，你从名字就可以看出来，你只需要配置它，然后把它注入容器就可以了
     */
    @Bean
    public CorsWebFilter corsWebFilter(){
        //这也是个配置对象
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        //这个对象就是设置跨域的配置信息的
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        //1、配置跨域
        //给响应对象设置上改字段，表示我服务器允许所有类型的头对应的请求进行跨域，也就告诉浏览器，你任何请求带的头，都可以跨域访问我
        corsConfiguration.addAllowedHeader("*");
        //告诉浏览器，你下次请求，任何请求类型，我服务器都支持你跨域
        corsConfiguration.addAllowedMethod("*");
        //告诉浏览器，你下次请求，任何ip来源，我服务器都支持你跨域
        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.setAllowCredentials(true);
        source.registerCorsConfiguration("/**",corsConfiguration);
        return new CorsWebFilter(source);
    }
}
